﻿#ifndef WIDGET_H
#define WIDGET_H

#include <QPushButton>
#include <QSerialPort>
#include <QTimer>
#include <QWidget>
#include <QCheckBox>
#include "mycombobox.h"


QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_btnOpCl_clicked();//打开串口通道 //废弃

    void on_send_clicked();//发送按钮

    void on_serialData_readyToread();//读取串口数据 绑定readyAll信号

    void on_btnOpCl_clicked(bool checked);//打开串口通道

    void on_onTimeSend_clicked(bool checked);//定时发送

    void on_clearRe_clicked();//清楚接受区数据

    void on_saveRe_clicked();//保存接受区数据

    void on_HexShow_clicked(bool checked);//Hex显示

    void on_hideRe_clicked(bool checked);//Hex隐藏

    void on_hideHistory_clicked(bool checked);//发送历史记录显示

    void refreshSerialName();//串口刷新 绑定自定义控件定义的信号

//    void on_pushButton_1_clicked();

    void on_command_button_clicked();//指令框 绑定sender

    void on_checkBox_send_clicked(bool checked);//指令框是否Hex发送

    void on_btnInit_clicked();//重置按钮

    void on_btnSave_clicked();//保存指令按钮

    void on_btnLoad_clicked();//重载指令按钮

private:
    Ui::Widget *ui;
    QSerialPort *serialPort;

    int writeCount;
    int readCount;
    QString tmpRecode;
    bool serialStatus;
    int buttonindex;

    QTimer *timer; //定时发送定时器
    QTimer *dateTimer;//刷新时间
    QTimer *cirsendTimer;//指令框循环发送

    void timeFresh();//时间的槽函数
    void button_handler();//循环发送的槽函数

    QList<QPushButton *> buttons;
    QList<QLineEdit *> lineEdits;
    QList<QCheckBox *> checkBoxs;


};
#endif // WIDGET_H
